package com.boatAnchorAssistant.service.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.boatAnchorAssistant.pojo.dto.user.MoveUserDto;
import com.boatAnchorAssistant.pojo.dto.user.SelectUserRoleBindDto;
import com.boatAnchorAssistant.pojo.entity.User;
import com.boatAnchorAssistant.pojo.vo.user.GetUserListByRoleVo;
import com.boatAnchorAssistant.pojo.vo.user.GetUserListVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import com.boatAnchorAssistant.pojo.dto.user.SelectUserDto;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import java.util.List;

/**
 * 【描 述】：
 * 【环 境】：J2SE
 * 【详 细】：
 *
 */
@Repository
public interface UserMapper extends BaseMapper<User> {

    /**
     * 搜索用户
     * @param dto
     * @return
     */
    Page<User> selectUser(SelectUserDto dto);


    /**
     * 获取用户角色绑定列表
     * @param dto
     * @return
     */
    Page<GetUserListByRoleVo> getUserRoleBindList(SelectUserRoleBindDto dto);

    /**
     * 批量删除用户
     * @param idList
     */
    void bathRemoveUser(@Param("idList") List<Long> idList);


    /**
     * 批量移动用户到其他部门下
     * @param dto
     */
    void bathMoveUser(MoveUserDto dto);


    /**
     * 获取企业下的用户id列表
     * @param tenantId
     * @return
     */
    List<Long> getUserIdListByTenantId(@Param("tenantId") Long tenantId);


    /**
     * 根据部门获取用户清单
     * @param dto
     * @return
     */
    Page<GetUserListVo> getUserListByDepartment(SelectUserDto dto);
}